package com.huc.tools.tools.mongo;

import com.alibaba.fastjson.JSON;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

import java.util.List;

/**
 * @Author: 胡成
 * @Version: 0.0.1V
 * @Date: 2018/8/7
 * @Description: mongodb工具类
 **/
public class MongoTools {

    /**
     * @param mongoTemplate
     * @param obj
     * @Author: 胡成
     * @Date: 2018/8/7 11:50
     * @Description: mongodb保存数据, 根据bean生成新的集合
     **/
    public static void save(MongoTemplate mongoTemplate, Object obj) {
        mongoTemplate.save(obj);
    }

    /**
     * @param mongoTemplate
     * @param c
     * @Author: 胡成
     * @Date: 2018/8/7 9:59
     * @Description: mongodb查询所有集合中的数据
     **/
    public static String queryFildAll(MongoTemplate mongoTemplate, Class c) {
        List<Object> list = mongoTemplate.findAll(c);
        return JSON.toJSONString(list);
    }

    /**
     * @param mongoTemplate
     * @param c
     * @param query
     * @Author: 胡成
     * @Date: 2018/8/7 10:02
     * @Description: mongodb根据条件查询数据
     **/
    public static String queryFildOne(MongoTemplate mongoTemplate, Class c, Query query) {
        Object obj = mongoTemplate.find(query, c);
        return JSON.toJSONString(obj);
    }

    /**
     * @param mongoTemplate
     * @param c
     * @param query
     * @param update
     * @Author: 胡成
     * @Date: 2018/8/7 10:05
     * @Description: mongodb根据条件修改匹配的第一条数据
     **/
    public static void updateFirst(MongoTemplate mongoTemplate, Class c, Query query, Update update) {
        mongoTemplate.updateFirst(query, update, c);
    }

    /**
     * @param mongoTemplate
     * @param c
     * @param query
     * @param update
     * @Author: 胡成
     * @Date: 2018/8/7 10:11
     * @Description: mongodb根据条件修改匹配到的所有数据
     **/
    public static void updateMulti(MongoTemplate mongoTemplate, Class c, Query query, Update update) {
        mongoTemplate.updateMulti(query, update, c);
    }

    /**
     * @param mongoTemplate
     * @param query
     * @param c
     * @Author: 胡成
     * @Date: 2018/8/7 10:15
     * @Description: mongodb删除条件匹配成功的数据
     **/
    public static void remove(MongoTemplate mongoTemplate, Query query, Class c) {
        mongoTemplate.remove(query, c);
    }

    /**
     * @param mongoTemplate
     * @param query
     * @param c
     * @Author: 胡成
     * @Date: 2018/8/7 11:48
     * @Description: mongodb根据条件查找数据并删除
     **/
    public static void findAndRemove(MongoTemplate mongoTemplate, Query query, Class c) {
        mongoTemplate.findAndRemove(query, c);
    }

    /**
     * @param mongoTemplate
     * @param query
     * @param c
     * @Author: 胡成
     * @Date: 2018/8/7 11:48
     * @Description: mongodb根据条件查找数据并删除所有匹配成功的
     **/
    public static void findAllAndRemove(MongoTemplate mongoTemplate, Query query, Class c) {
        mongoTemplate.findAllAndRemove(query, c);
    }

}
